package com.rfid.dao.jdbc;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;

import com.rfid.dao.interfaces.AccesorioDao;
import com.rfid.domain.Accesorio;
import com.rfid.domain.Alumno;
import com.rfid.domain.TipoAccesorio;

@Repository
@SuppressWarnings({ "rawtypes", "unchecked" })
public class AccesorioJdbc implements AccesorioDao {

	@Autowired
	private JdbcTemplate jdbcTemplate;

	@Override
	public int insertar(Accesorio vo) throws SQLException {
		String SQL = "INSERT INTO accesorio VALUES (?,?,?,?,?,?)";
		int result;

		result = jdbcTemplate.update(SQL,
				new Object[] { null, vo.getSerie(), vo.getModelo(), vo.getMarca(),
						vo.getMyTipoAccesorio().getIdTipoAccesorio(),
						vo.getMyAlumno().getIdAlumno() });
		return result;
	}

	@Override
	public List<Accesorio> listarPorAlumno(int idAlumno) throws SQLException {
		String Sql = "SELECT * FROM accesorio WHERE idalumno = ?";
		List matches = jdbcTemplate.query(Sql, new Object[] { idAlumno }, new RowMapper() {

			@Override
			public Object mapRow(ResultSet rs, int numRow) throws SQLException {
				Accesorio accesorio = new Accesorio();
				Alumno alumno = new Alumno();
				TipoAccesorio tipoAccesorio = new TipoAccesorio();
				
				accesorio.setIdAccesorio(rs.getInt("idaccesorio"));
				accesorio.setSerie(rs.getString("serie"));
				accesorio.setMarca(rs.getString("marca"));
				accesorio.setModelo(rs.getString("modelo"));
				tipoAccesorio.setIdTipoAccesorio(rs.getInt("idtipo_accesorio"));
				alumno.setIdAlumno(rs.getInt("idalumno"));
				accesorio.setMyAlumno(alumno);
				accesorio.setMyTipoAccesorio(tipoAccesorio);
				return accesorio;
			}
		});
		return matches.size()>0? (List<Accesorio>)matches:null;
	}

	@Override
	public Accesorio actualizar(Accesorio vo) throws SQLException {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public boolean eliminar(String idAccesorio) throws SQLException {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public List<Accesorio> listarPorAccesorio(int idalumno) throws SQLException {
		// TODO Auto-generated method stub
		return null;
	}

}